package com.su.gulimall.seckill.schedule;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

//第一步，该类拥有定时功能
@EnableScheduling
//第二步，标记将该类注入容器中
@Component
//第三步，以日志的形式输出定时任务信息,查看秒杀是否生效
@Slf4j
@EnableAsync
public class Schedule {
    /*
    *
    * spring 6位组成，不允许第7位的年，
    * 在周几的位置：1-7代表周一到周日
    * 定时任务不应该阻塞，默认是阻塞的，一个任务必须执行完成，才能等到下一个任务的执行
    * 第一，使用异步方式运行，自己提交到线程池；
    * 第二，springboot提供定时任务线程池，默认线程容量为1，可以调整该容量从而消除阻塞， 此方法很容易失败，springboot自带的bug
    * 第三，开启异步任务，类上标注@EnableAsync,方法上标注 @Async
    * 需要注意的是，必须在定时任务的时候，才可以开启异步任务
    * ）
    * */
/*   @Scheduled(cron = "1-30 * * * * *")
     @Async
    public void hello() throws InterruptedException {
       Thread.sleep(3000);
   }*/
}
